/**
 * 
 */
package jmine.tec.report;

import java.util.List;
import java.util.Map;

/**
 * Descreve uma coluna executavel
 * 
 * @author takeshi
 * @version 22/08/2007
 */
public interface ExecutableDataColumn extends DataColumn {
    /**
     * Executa a operação que este DataColumn define nos DataRow's fornecidos.
     * 
     * @param rows List
     * @param params {@link Map} optional parameters
     */
    void execute(List<? extends ExecutableDataRow> rows, Map<String, Object> params);

    /**
     * Executes a specific column, using the given type as a separator.
     * 
     * @param type the type
     * @param row the {@link ExecutableDataRow}
     * @param params the map of parameters.
     */
    void executeByObjectType(Class<?> type, ExecutableDataRow row, Map<String, Object> params);

    /**
     * Returns <code>true</code> if this column knows the given object type - in other words, if its action on the target object is better
     * than adding an empty data cell
     * 
     * @param type the type to check
     * @return boolean
     */
    boolean reactsTo(Class<?> type);

}
